home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1998-06-10 | 3.2 KB | 131 lines |
- 'Load Iff "dh1:AmosGfx/GravityWars.iff",0
- 'For A=0 To 7
- ' For AA=0 To 31
- ' X=(AA mod 20)*16 : Y=((AA/20)+A*2)*16
- ' Get Sprite 1+AA+A*32,X,Y To X+16,Y+16
- ' Hot Spot 1+AA+A*32,7,7
- ' Next
- 'Next
- Degree
- Screen Open 0,320,256,2,0
- Curs Off : Flash Off : Paper 0 : Pen 1 : Cls
- Double Buffer : Autoback 0
- ' X,Y,SX,SY,M,TYPE
- ' ROT,FIR,TIM,AMMO
- '
- Hide
- Get Sprite Palette
- For A=0 To 15 : Colour A+16,Colour(A) : Next
- Dim O(10+4*10,10)
- FAC=128 : SPMAX=384
- O(0,0)=64*FAC : O(0,1)=128*FAC
- O(0,2)=0 : O(0,3)=0 : O(0,4)=100
- O(0,5)=1
- O(1,0)=(320-64)*FAC : O(1,1)=127*FAC
- O(1,2)=-32 : O(1,3)=-32 : O(1,4)=100
- O(1,5)=1
- For A=4 To 9
- O(A,0)=Rnd(319)*FAC : O(A,1)=Rnd(255)*FAC : O(A,4)=5000+Rnd(15000)
- O(A,2)=Rnd(64)-32 : O(A,3)=Rnd(64)-32
- O(A,5)=3
- Next
- Do
- Screen Swap : Wait Vbl
- Extension_8_121C 0,0
- J=1 : P=0
- If Fire(J)
- O(P,7)=1 : W=(O(P,6)+48)*16
- Add O(P,2), Extension_8_1114(W,4)
- Add O(P,3), Extension_8_1106(W,4)
- Else
- O(P,7)=0
- End If
- If Jleft(J) Then Add O(P,6),-1,0 To 63
- If Jright(J) Then Add O(P,6),1,0 To 63
- If Jup(J) and O(P,8)=0 Then Gosub SHOT
- J=0 : P=1
- If Fire(J)
- O(P,7)=1 : W=(O(P,6)+48)*16
- Add O(P,2), Extension_8_1114(W,4)
- Add O(P,3), Extension_8_1106(W,4)
- Else
- O(P,7)=0
- End If
- If Jleft(J) Then Add O(P,6),-1,0 To 63
- If Jright(J) Then Add O(P,6),1,0 To 63
- If Jup(J) and O(P,8)=0 Then Gosub SHOT
- For O1=0 To 19
- For O2=0 To 9
- If O1<>O2 and O(O1,5)<>0 and O(O2,5)<>0
- DX=(O(O2,0)-O(O1,0))/FAC : DY=(O(O2,1)-O(O1,1))/FAC
- D=DX*DX+DY*DY
- If D>6 and D<10000
- F=(39*O(O2,4))/(D*O(O1,4))
- If F>0
- WN= Extension_8_16C2(DX,DY)
- Add O(O1,2), Extension_8_1114(WN,F)
- Add O(O1,3), Extension_8_1106(WN,F)
- End If
- Else
- If D<5
- If O2<4 and O1>3
- Inc O(O2,10)
- O(O2,0)=160*FAC : O(O2,1)=128*FAC : RemO(O2,2)=0 : O(O2,3)=0
- ' O(O1,5)=0
- Else
- ' O(O1,5)=0 : Add O(O2,4),O(O1,4)
- End If
- End If
- End If
- End If
- Next
- Next
- Add TIM,1,0 To 4
- For O1=0 To 19
- SX=Min(Max(O(O1,2),-SPMAX),SPMAX)
- SY=Min(Max(O(O1,3),-SPMAX),SPMAX)
- If O1<4
- If TIM=0
- Add SX,-Sgn(SX) : Add SY,-Sgn(SY)
- End If
- O(O1,2)=SX : O(O1,3)=SY
- End If
- O(O1,0)=(O(O1,0)+SX+320*FAC) mod(320*FAC)
- O(O1,1)=(O(O1,1)+SY+256*FAC) mod(256*FAC)
- Next
- Home
- For P=0 To 3
- If O(P,8) Then Dec O(P,8)
- If O(P,5)
- Sprite P*2,X Hard(O(P,0)/FAC),Y Hard(O(P,1)/FAC),1+32*P+O(P,6)/2+O(P,7)*128
- Print Extension_8_0EB8(O(P,10),3);" ";
- Else
- Sprite Off P*2
- End If
- Next
- For A=4 To 9
- If O(A,5)
- Extension_8_05E6 O(A,0)/FAC,O(A,1)/FAC,Abs(O(A,4))/2000
- End If
- Next
- For A=10 To 19
- If O(A,5)
- Extension_8_0388 O(A,0)/FAC,O(A,1)/FAC,1
- Dec O(A,8)
- If O(A,8)=0 : O(A,5)=0 : End If
- End If
- Next
- Loop
- SHOT:
- O(P,8)=8
- For A=10+P*10 To 19+P*10
- If O(A,5)=0
- W=(O(P,6)+48)*16
- SX= Extension_8_1114(W,256) : SY= Extension_8_1106(W,256)
- O(A,0)=O(P,0)+SX*4 : O(A,1)=O(P,1)+SY*4
- O(A,2)=SX : O(A,3)=SY
- O(A,4)=20 : O(A,5)=10+P : O(A,8)=150
- Exit
- End If
- Next
- Return